Structural Patterns

Structural Pattern은 애플리케이션 구조를
보다 SOLID 원칙을 잘 준수하면서, 코드의 범용적인 사용성을 높이고 리팩터링을 쉽게할 구조들을 제안한다.
- 상속:
객체가 상위 클래스들의 public, protected 필드 및 멤버 함수들을 자동으로 넘겨 받는다.
인스턴스화 가능한 클래스로 만들기 위해서 상위 클래스들의 모든 pure-virtual member function들을
구현해 주어야 한다.
- 컴포지션(composition):
구성 요소를 멤버로서 가지고, 멤버 객체들이 부모 객체 없이는 존재할 수 없는 형태의 구성을 의미한다.
owner<T> 타입을 멤버로 가지는 경우(객체가 소멸될 때, 멤버도 소멸된다.)
- 애그리게이션(aggregation):
객체가 다른 객체를 내부에서 참조하기는 하지만, 그 객체가 독립적으로 존재할 수 있는 형태의 구성을 의미
T* 또는 shared_ptr<T> 타입의 멤버를 가진 경우